"""
定义用户认证器接口。
"""

from abc import ABC, abstractmethod
from typing import Optional

from axiom_boot.auth.models import Principal


class BaseUserAuthenticator(ABC):
    """
    定义用户认证器的标准接口。
    """

    @abstractmethod
    async def authenticate(self, username: Optional[str], password: Optional[str]) -> Optional[Principal]:
        pass

    @abstractmethod
    async def get_principal_by_id(self, user_id: any) -> Optional[Principal]:
        """
        根据用户ID获取用户信息主体。
        """
        pass 
        raise NotImplementedError 